<?php
echo "<!--
/*
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 :: Classe: CRUD                                                       ::
 :: Camada MVC: Control - Controle                                     ::
 :: Função: Executar os comandos básicos de consulta no MySQL.         ::
 :: Autor: William D. Urbano    Data criação: 19/04/2012               ::
 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -->";/*
 ::                       REGISTRO ATUALIZAÇOES                        ::
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 :: Desenvolvedor: William D. Urbano                                   ::
 :: Alterações: Implementação de métodos que constroem e executam      ::
 :: as queries UPDATE e DELETE.                                        ::
 ::                                                                    ::
 :: Data: 20/04/2012                                        Versão: 2  ::
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 :: Desenvolvedor: William D. Urbano                                   ::
 :: Alterações: Criação da classe.                                     ::
 ::                                                                    ::
 :: Data: 19/04/2012                                        Versão: 1  ::
 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 */
 
class CRUD {

  private $tabela;
  private $campos;
  private $clausulas;
  private $ordem;
  private $agrupamento;
  private $limite;
  private $valores;
  private $atualizacao;
  private $query;

  public function aSetar_tabela($tabela) {
    $this->tabela = $tabela;
  }

  protected function get_tabela() {
    return $this->tabela;
  }

  public function aSetar_campos($campos) {
    $this->campos = $campos;
  }

  protected function get_campos() {
    return $this->campos;
  }

  public function aSetar_clausulas($clausulas) {
    $this->clausulas = $clausulas;
  }

  protected function get_clausulas() {
    return $this->clausulas;
  }

  public function aSetar_campo_ordem($campo_ordem) {
    $this->campo_ordem = $campo_ordem;
  }

  protected function get_campo_ordem() {
    return $this->campo_ordem;
  }

  public function aSetar_ordem($ordem = 'ASC') {
    $this->ordem = " " . $ordem;
  }

  protected function get_ordem() {
    return $this->ordem;
  }

  public function aSetar_agrupamento($agrupamento) {
    $this->agrupamento = $agrupamento;
  }

  protected function get_agrupamento() {
    return $this->agrupamento;
  }

  public function aSetar_limite($limite) {
    $this->limite = $limite;
  }

  protected function get_limite() {
    return $this->limite;
  }

  public function aSetar_valores($valores) {
    $this->valores = $valores;
  }

  protected function get_valores() {
    return $this->valores;
  }

  public function aSetar_atualizacao($atualizacao) {
    $this->atualizacoes = $atualizacao;
  }

  protected function get_atualizacao() {
    return $this->atualizacoes;
  }

//método construtor do select
  public function selectCons() {
    $query = "SELECT ";
//concatenando os nomes dos campos à consulta
    if (isset($this->campos) && $this->campos != "") {
      $query .= $this->campos;
    }
//concatenando o nome da tabela à consulta
    if (isset($this->tabela) && $this->tabela != "") {
      $query .= " FROM " . $this->tabela;
    }

//concatenando as cláusulas da consulta
    if (isset($this->clausulas) && $this->clausulas != "") {
      $query .= " WHERE " . $this->clausulas;
    }

//concatenando o nome do campo de ordem
    if (isset($this->campo_ordem) && $this->campo_ordem != "") {
      $query .= " ORDER BY " . $this->campo_ordem;
    }

//concatenando a ordem de seleção à consulta
    if (isset($this->ordem) && $this->ordem != "") {
      $query .= $this->ordem;
    }

//concatenando o agrupamento (group by) à consulta
    if (isset($this->agrupamento) && $this->agrupamento != "") {
      $query .= " " . $this->agrupamento;
    }

//concatenando o agrupamento (group by) à consulta
    if (isset($this->limite) && $this->limite != "") {
      $query .= " LIMIT " . $this->limite;
    }

//setando a consulta para a variável da classe
    return $this->query = $query;
  }

//método que executa o select
  public function selectExe() {
    $result = mysql_query($this->query);
    $i = 0;
    while ($obj_dados = mysql_fetch_assoc($result)) {
      $dados[$i] = $obj_dados;
      $i++;
    }
    return $dados;
  }

  //método construtor do insert
  public function insertCons() {
    $query = "INSERT INTO $this->tabela (";
    //concatenando os nomes dos campos à consulta
    if (isset($this->campos) && $this->campos != "") {
      $query .= $this->campos;
    }
    $query .= ") VALUES (";
    //concatenando os valores a serem adicionados
    if (isset($this->valores) && $this->valores != "") {
      $query .= $this->valores;
    }
    $query .= ");";
    $this->query = $query;
    return $this->query;
  }

  //método que executa o insert
  public function insertExe() {
    mysql_query($this->query);
  }

  //método constutor da consulta insert
  public function updateCons() {
    $query = "UPDATE $this->tabela SET $this->atualizacao WHERE $this->clausulas";
    $this->query = $query;
    return $this->query;
  }

  //metodo que executa o insert
  public function updateExe() {
    mysql_query($this->query);
  }

  //metodo construtor da consulta delete
  public function deleteCons() {
    $query = "DELETE FROM $this->tabela WHERE $this->clausulas";
    $this->query = $query;
    return $this->query;
  }

  //método que executa o delete
  public function deleteExe() {
    mysql_query($this->query);
  }

}

?>
